package br.org.acessobrasil.portal.persistencia;

import java.util.List;

import javax.persistence.Query;

import br.org.acessobrasil.portal.modelo.PadraoApresentacao;
import br.org.acessobrasil.portal.modelo.Sitio;


public class PadraoApresentacaoDaoSpring extends SuperDao<PadraoApresentacao> {
	private static PadraoApresentacaoDaoSpring instance;
	
	public PadraoApresentacaoDaoSpring(){
		instance = this;
	}	
	
	@SuppressWarnings("unchecked")
	public List<PadraoApresentacao> listaTodos(Sitio sitio){
		return this.getEntityManager().createQuery("from PadraoApresentacao p where p.sitio = ?").setParameter(1,sitio).getResultList();
	}
	
	public void delete(long id) {
		PadraoApresentacao padraoApresentacao = getEntityManager().find(PadraoApresentacao.class, id);
		getEntityManager().remove(padraoApresentacao);
	}
	
	public PadraoApresentacao select(Long nu_padrao_apresentacao) throws Exception  {
		return getEntityManager().find(PadraoApresentacao.class, nu_padrao_apresentacao);
	}

	public static PadraoApresentacaoDaoSpring getInstance() {
		return instance;
	}

	@Override
	public void create(PadraoApresentacao padraoApresentacao) {
		getEntityManager().persist(padraoApresentacao);
	}

	public void delete(PadraoApresentacao padraoApresentacao) {
		getEntityManager().remove(padraoApresentacao);
	}

	/**
	 * Verifica se existe um padrao com o codigo do temp
	 * @param padraoApresentacao
	 */
	@SuppressWarnings("unchecked")
	public List<PadraoApresentacao> like(PadraoApresentacao padraoApresentacao) {
		Query q = getEntityManager().createQuery("Select p From PadraoApresentacao p where p.de_padrao_temp = ?");
		q.setParameter(1, padraoApresentacao.getDePadraoTemp());
		return q.getResultList();
	}
}
